Update readme a lot
authorFelix Krull <f_krull@gmx.de>
Thu, 18 Oct 2018 18:13:48 +0000 (20:13 +0200)
committerColin Walters <walters@verbum.org>
Fri, 6 May 2022 16:53:53 +0000 (12:53 -0400)
rust-bindings/rust/README.md

index 6a3a40a7b3cb28b5d1d04ae37f17a6eb24f0997b..29bc6d284d65f711241dde85c58d059cee3a98ce 100644 (file)
@@ -1,22 +1,28 @@
-# Rust bindings for libostree
-libostree is both a shared library and suite of command line tools that combines a "git-like" model for committing and
-downloading bootable filesystem trees, along with a layer for deploying them and managing the bootloader configuration.
-The core OSTree model is like git in that it checksums individual files and has a content-addressed-object store. It's
-unlike git in that it "checks out" the files via hardlinks, and they thus need to be immutable to prevent corruption.
+# rust-libostree
+[![pipeline status](https://gitlab.com/fkrull/rust-libostree/badges/master/pipeline.svg)](https://gitlab.com/fkrull/rust-libostree/commits/master)
+[![Crates.io](https://img.shields.io/crates/v/libostree.svg)](https://crates.io/crates/libostree)
 
-[libostree site](https://ostree.readthedocs.io) | [libostree git repo](https://github.com/ostreedev/ostree)
+**Rust** bindings for [libostree](https://ostree.readthedocs.io).
 
-This project provides [Rust](https://rust-lang.org) bindings for libostree. They are automatically generated, but rather
-incomplete as of yet.
+libostree is both a shared library and suite of command line tools that combines
+a "git-like" model for committing and downloading bootable filesystem trees,
+along with a layer for deploying them and managing the bootloader configuration.
 
-## Setup
-The `libostree` crate requires libostree and the libostree development headers. On Debian/Ubuntu, they can be installed
-with:
+## Status
+The bindings are quite incomplete right now. Most of it can be autogenerated,
+but I simply turned on what I needed and left the rest for later.
+
+## Using
+
+### Requirements
+The `libostree` crate requires libostree and the libostree development headers.
+On Debian/Ubuntu, they can be installed with:
 
 ```ShellSession
 $ sudo apt-get install libostree-1 libostree-dev
 ```
 
+### Installing
 To use the crate, add it to your `Cargo.toml`:
 
 ```toml
@@ -24,7 +30,8 @@ To use the crate, add it to your `Cargo.toml`:
 libostree = "0.1"
 ```
 
-To use features from later libostree versions, you need to specify the release version as well: 
+To use features from later libostree versions, you need to specify the release
+version as well: 
 
 ```toml
 [dependencies.libostree]
@@ -32,8 +39,49 @@ version = "0.1"
 features = ["v2018_7"]
 ```
 
+## Developing
+The `libostree` and `libostree-sys` crates can be built and tested using regular
+Cargo commands. 
+
+### Generated code
+Most code is generated based on the gir files using the
+[gir](https://github.com/gtk-rs/gir) tool. These parts can be regenerated using
+the included Makefile:
+
+```ShellSession
+$ make generate-libostree-sys generate-libostree
+```
+
+Run the following command to update the bundled gir files:
+
+```ShellSession
+$ make update-gir-files
+```
+
+### Documentation
+The libostree API documentation is not included in the code by default because
+of its LGPL license. This means normal `cargo doc` runs don't include API docs
+for the generated code. Build the crate with the `lgpl-docs` feature to merge
+the API docs into the code:
+
+```ShellSession
+$ cd libostree/
+$ cargo doc --features "dox lgpl-docs"
+```
+
+(The `dox` feature enables all functions etc. regardless of version.) Keep in
+mind that if you build the crate with the `lgpl-docs` feature, it is effectively
+LGPL-licensed and you need to comply with the LGPL requirements (specifically,
+allowing users of your end product to swap out the LGPL'd parts).
+
+### Releases
+Releases can be done using the publish_* jobs in the pipeline. There's no
+versioning helper yet so version bumps need to be done manually.
+
 ## License
-The libostree crate is licensed under the MIT license. See the LICENSE file for details.
+The libostree crate is licensed under the MIT license. See the LICENSE file for
+details.
 
-libostree itself is licensed under the LGPL2+. See its [licensing information](https://ostree.readthedocs.io#licensing)
-for more information.
+libostree itself is licensed under the LGPL2+. See its
+[licensing information](https://ostree.readthedocs.io#licensing) for more
+information.